/**
 * jims
 */
package com.jims.master.modules.csm.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.modules.csm.entity.ExpBuyPlan;
import com.jims.master.modules.csm.entity.ExpInfo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 消耗品采购计划DAO接口
 * @author DT
 * @version 2017-03-22
 */
@MyBatisDao
public interface ExpBuyPlanDao extends CrudDao<ExpBuyPlan> {

    /**
     * 查询某段时间区内各科室审核后的申请信息(生成采购计划)
     * @param storageOut 发放库房(采购库房,一级库)
     * @param startDate 开始日期
     * @param stopDate 结束日期
     * @return
     * @author fengyg
     * @date 2017-06-28
     */
    public List<ExpBuyPlan> createExpBuyPlan(@Param("storageOut")String storageOut,@Param("startDate")String startDate,@Param("stopDate")String stopDate);

    /**
     *根据采购单号查找采购单(消耗品采购计划查询功能)
     * @param expBuyPlan
     * @return
     * @author DT
     */
    public List<ExpBuyPlan> findByNumber(ExpBuyPlan expBuyPlan);

    /**
     * 根据采购单号查询科室申请耗材信息(采购对消入出库功能页面)
     * @param purchaseNumber 采购单号
     * @param storageOut 发放科室
     * @param orgId 组织机构ID
     * @return
     * @author fengyg
     * @date 2017-07-19
     */
    public List<ExpBuyPlan> findExpProvideApplicationByNumber(@Param("purchaseNumber")String purchaseNumber,@Param("storageOut")String storageOut,@Param("orgId")String orgId);

    /**
     * 根据科室申请表ID查询科室申请某个耗材信息(采购对消入出库功能,右侧弹出页面修改指定行数据)
     * @param expBuyPlan
     * @return
     * @author fengyg
     * @date 2017-07-20
     */
    public ExpBuyPlan getByApplicationId(ExpBuyPlan expBuyPlan);

    /**
     *  查询当前最大采购单号
     * @param documentNo
     * @return
     * @author fengyg
     * @date 2017-07-17
     */
    public int findDocumentNo(@Param("documentNo")String documentNo,@Param("orgId")String orgId);

    /**
     * 获取所有采购单号
     * @param orgId 组织机构ID
     * @return
     * @author fengyg
     * @date 2017-07-18
     */
    public List<ExpBuyPlan> getAllPurchaseNumber(@Param("storageId")String storageId,@Param("orgId")String orgId);

    /**
     * 获取所有未入库的采购单号
     * @param storageId 库房ID(当前登录人只能获取当前一级库的未入库采购单号，不能看别的一级库未入库采购单)
     * @param orgId
     * @return
     */
    public List<ExpBuyPlan> getNoImpNum(@Param("storageId")String storageId,@Param("orgId")String orgId);

    /**
     * 更新采购表状态
     * 先判断科室申请耗材是否都发放完毕，如果都发放完，那么更新采购表状态
     * @param purchaseNumber
     * @param supplier
     * @param importMasterId
     * @return
     */
    public int updateBuyPlanOutFlag(@Param("purchaseNumber")String purchaseNumber,@Param("supplier")String supplier,@Param("importMasterId")String importMasterId);
}